package main

// 同種の処理は()を使ってひとまとめにできる
import (
	"os"
	"flag"
)

// -n フラグを格納するための変数
// この変数は *bool型
var omitNewline = flag.Bool("n", false, "don't print fial newline")

const (
	Space = " "
	Newline = "\n"
)

func main() {
	// コマンドラインパラメータの解析
	flag.Parse()

	// var [変数名] [変数の型] = [初期値]
	// var s = "" でもOK
	// s := "" でもOK
	// := は初期値を宣言する際に使う
	var s string = ""

	// while や do はなく、ループはforのみ
	// 条件文の()は不要、ブロックは{}で括る
	for i := 0; i < flag.NArg(); i++ {
		if i > 0 {
			s += Space
		}
		s += flag.Arg(i)
	}
	if !*omitNewline {
		s += Newline
	}
	os.Stdout.WriteString(s)

	// main関数は戻り値なし
	// エラーを返したい場合は os.Exit(1) とか
}

